cmake_minimum_required(VERSION 3.14)
project(test_me_odb)

set(CMAKE_CXX_STANDARD 11)

add_definitions(-Wdeprecated-declarations)
add_definitions(-D DATABASE_MYSQL)

find_package(Qt5Core)
find_package(PkgConfig)


pkg_search_module(ODB REQUIRED libodb)
find_library(ODB_LIBRARY_VAR
        NAMES ${ODB_LIBRARIES}
        HINTS ${ODB_LIBRARY_DIRS} ${ODB_LIBDIR})

pkg_search_module(ODB_MYSQL  REQUIRED libodb-mysql)
find_library(ODB_MYSQL_LIBRARY_VAR
        NAMES ${ODB_MYSQL_LIBRARIES}
        HINTS ${ODB_MYSQL_LIBRARY_DIRS} ${ODB_MYSQL_LIBDIR})

pkg_search_module(ODB_BOOST  REQUIRED libodb-boost)
find_library(ODB_BOOST_LIBRARY_VAR
        NAMES ${ODB_BOOST_LIBRARIES}
        HINTS ${ODB_BOOST_LIBRARY_DIRS} ${ODB_BOOST_LIBDIR})

pkg_search_module(ODB_QT  REQUIRED libodb-qt)
find_library(ODB_QT_LIBRARY_VAR
        NAMES ${ODB_QT_LIBRARIES}
        HINTS ${ODB_QT_LIBRARY_DIRS} ${ODB_QT_LIBDIR})

# 查询
#显示如何使用ODB查询语言搜索数据库与特定条件匹配的持久对象。
add_subdirectory(query)
#显示ODB用于访问无法直接访问的数据成员的各种方法。
add_subdirectory(access)

# 有问题，已经解决
#演示如何持久化使用Boost智能指针、容器的对象，以及Boost profile库（libodb Boost）的帮助下的值类型。
add_subdirectory(boost)
#演示如何用C++ 11使用ODB。
add_subdirectory(c++11)
#演示如何声明和使用组合值类型。
add_subdirectory(composite)
#显示如何将容器用作持久对象中的数据成员。
add_subdirectory(container)
#一个“Hello World”示例演示如何使用ODB执行基本的数据库操作。
add_subdirectory(hello)
#演示如何对ODB使用多态继承。
add_subdirectory(inheritance/polymorphism)

#演示如何对ODB使用重用继承。
add_subdirectory(inheritance/reuse)
#演示如何声明和使用双向一对一、一对多和多对多关系。
add_subdirectory(inverse)

#演示如何自定义C++值类型与数据库类型之间的映射。
add_subdirectory(mapping)
#演示如何在ODB中使用乐观并发。
add_subdirectory(optimistic)
#演示如何使用虚拟数据成员来实现使用PIMLL C++习语的持久类。
#add_subdirectory(pimpl)
#演示如何使用准备好的查询。
add_subdirectory(prepared)

# 有问题,已经解决
#显示如何持久化使用Qt智能指针、容器和借助Qt配置文件库（libodbqt）的值类型。
add_subdirectory(qt)
#演示如何对一个和多个对象声明和使用单向关系。
add_subdirectory(relationship)
#演示如何将持久性C++类映射到自定义数据库架构。
add_subdirectory(schema/custom)
#显示如何生成和使用嵌入到申请。
add_subdirectory(schema/embedded)

#演示如何使用对象节实现持久类中数据成员子集的延迟加载和更改更新。
add_subdirectory(section)
#演示如何定义和使用对象、表、混合视图和本机视图。
add_subdirectory(view)

add_subdirectory(testMeNoteTree/mysql)

add_subdirectory(testMeNoteTree/sqlite)

add_subdirectory(testInverse)

# 多文件构建错误
add_subdirectory(testInverseQt)
add_executable(test_me_odb main.cpp)